package elEMAS.inf;

import common.BasicAgent;

public interface Agent <Genotype> extends BasicAgent<Genotype> {

	public boolean acceptMeet(Agent<Genotype> aAskingAgent);

	public boolean acceptRepro(Agent<Genotype> aAskingAgent);

	public void LifeStep();

	/**
	 * Assimilate basic quantum of energy
	 */
	public void assimilateEnergy();
	
	public void assimilateEnergy(int amount);
	
	/**
     * Transfer basic quantum of energy
     */
	public void transfer(Agent<Genotype> aAskingAgent);
	
	public void transfer(Agent<Genotype> aAskinAgent, int amount);
	
	public void transferToEnv(int amount);
		
	public void loseEnergy(int aAmont);
	
	public int getEnergy();
	
	public void mut();
}